home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Freeware / DiskMaster / Rexx / ArcTrans.rexx < prev    next >
OS/2 REXX Batch file  |  2002-10-27  |  3KB  |  104 lines

  1. /* $VER: ArcTrans v1.1 (29.3.95) by J. Tierney
  2.  
  3. Archive Transformer  v1.1
  4. 3/29/95  J. Tierney
  5.  
  6. Usage:  ArcTrans.rexx <source archive> [<dest dir>] [AUTO=1|ON]
  7.       - AUTO=1 - No requester.  ArcTrans determines Lha/LZX/Best option.
  8. */
  9. PARSE ARG arc dest 'AUTO=' auto .
  10. IF auto > 0 | UPPER(auto) = 'ON' THEN auto = 1
  11. ELSE auto = 0
  12. arc = STRIP(arc)
  13. dest = STRIP(dest)
  14.  
  15. tempdir = 'T:ArcTemp'
  16. IF ~EXISTS(tempdir) THEN ADDRESS COMMAND 'C:MakeDir >NIL:' tempdir
  17. tempdir = tempdir || '/'
  18. /* IF RIGHT(tempdir, 1) ~= ':' & RIGHT(tempdir, 1) ~= '/' THEN tempdir = tempdir || '/' */
  19.  
  20. IF ~auto THEN DO
  21.   IF ~SHOW('L', 'rexxreqtools.library') THEN DO
  22.     IF ~ADDLIB('rexxreqtools.library', 0, -30) THEN DO
  23.       SAY 'Could not open "rexxreqtools.library".'
  24.       EXIT 10
  25.     END
  26.   END
  27.  
  28.   ADDRESS COMMAND 'C:GetPubName >PIPE:arctrans'
  29.   CALL OPEN('pipe', 'PIPE:arctrans')
  30.   pub = READLN('pipe')
  31.   CALL CLOSE('pipe')
  32. END
  33.  
  34. IF dest = '' THEN dest = 'SD0:'
  35. IF RIGHT(dest, 1) ~= ':' & RIGHT(dest, 1) ~= '/' THEN dest = dest || '/'
  36.  
  37. y = LASTPOS('.', arc)
  38. arcname = SUBSTR(arc, 1, y-1)
  39. ext = FIND('LHA LZX', UPPER(SUBSTR(arc, y+1)))
  40.  
  41. x = LASTPOS('/', arcname)
  42. IF x = 0 THEN x = LASTPOS(':', arcname)
  43. arcname = SUBSTR(arcname, x+1)
  44.  
  45. dest = dest || arcname
  46. arctype = C2D(BITXOR(ext, 3))
  47.  
  48. IF ~auto THEN DO
  49.   arctype = RTEZREQUEST('Transform To:', 'Lh_a|LZ_X|_Best|_Cancel', 'ArcTrans', 'rt_pubscrname=' || pub 'rt_reqpos=reqpos_centerscr rtez_defaultresponse=' || arctype)
  50.   CALL REMLIB('rexxreqtools.library')
  51. END
  52.  
  53. IF arctype = 0 THEN EXIT 0
  54. IF arctype = ext THEN DO
  55.   SAY arcname 'is already an' WORD('Lha LZX', ext) 'archive.'
  56.   EXIT 0
  57. END
  58.  
  59. IF ~auto THEN SAY 'Uncompressing...'
  60. ADDRESS COMMAND 'SYS:RexxC/RX >NIL: REXX:ArcMast.rexx' arc 'x' tempdir
  61.  
  62. olddir =  PRAGMA('D', tempdir)
  63. IF (arctype ~= ext) & (BITTST(arctype, 0)) THEN DO
  64.   IF ~auto THEN SAY 'Compressing with Lha...'
  65.   ADDRESS COMMAND 'C:Lha -r -q a' dest '#?'
  66. END
  67. IF (arctype ~= ext) & (BITTST(arctype, 1)) THEN DO
  68.   IF ~auto THEN SAY 'Compressing with LZX...'
  69.   ADDRESS COMMAND 'C:LZX -r -q -9 -e -Qf a' dest '#?'
  70. END
  71.  
  72. CALL PRAGMA('D', olddir)
  73. ADDRESS COMMAND 'C:Delete' tempdir 'ALL QUIET'
  74. IF arctype ~= 3 THEN EXIT 0
  75.  
  76. IF ~auto THEN SAY 'Size Check...'
  77. IF EXISTS(dest || '.lha') THEN DO
  78.   lhafile = dest || '.lha'
  79.   CALL OPEN('lha', lhafile, 'R')
  80.   lhasize = SEEK('lha', 0, 'E')
  81.   CALL CLOSE('lha')
  82. END
  83. ELSE EXIT 0
  84. IF EXISTS(dest || '.LZX') THEN DO
  85.   lzxfile = dest || '.LZX'
  86.   CALL OPEN('lzx', lzxfile, 'R')
  87.   lzxsize = SEEK('lzx', 0, 'E')
  88.   CALL CLOSE('lzx')
  89. END
  90. ELSE EXIT 0
  91. IF ~auto THEN DO
  92.   SAY '-' lhafile '=' lhasize 'bytes.'
  93.   SAY '-' lzxfile '=' lzxsize 'bytes.'
  94. END
  95. IF lhasize > lzxsize THEN DO
  96.   IF ~auto THEN SAY 'Deleting' lhafile || '...'
  97.   ADDRESS COMMAND 'C:DELETE' dest || '.lha QUIET'
  98. END
  99. ELSE DO
  100.   IF ~auto THEN SAY 'Deleting' lzxfile || '...'
  101.   ADDRESS COMMAND 'C:DELETE' dest || '.LZX QUIET'
  102. END
  103.  
  104.